<?php namespace app\system\controller;

use houdunwang\dir\Dir;
use houdunwang\request\Request;
use houdunwang\route\Controller;
use system\model\Admin;

class Install extends Controller{
	public function __construct()
	{
//		p(password_hash("JXZ3rkmPfz", PASSWORD_DEFAULT));die();
		$this->isInstalled();
	}
	//动作
    public function index(){
        //此处书写代码...
    }
	//是否已经安装
	protected function isInstalled ()
	{
		if ( is_file( 'lock.php' ) ) {
			die( view( 'isInstalled' ) );
		}
	}

	//创建加载安装页面函数----//版权信息
    public function copyright(){
    	return view();
	}
	//创建环境检验函数
	public function environmental(){
    	//进行一步一步的验证用户的环境是否符合安装的要求
		$data['server_software'] = $_SERVER['SERVER_SOFTWARE'];
		$data['php_version'] = PHP_VERSION;
		$data['pdo'] = extension_loaded('pdo');
		$data['gd'] = extension_loaded('gd');
		$data['curl'] = extension_loaded('curl');
		$data['openssl'] = extension_loaded('openssl');
//		p($data);die();
//		Array
//		(
//			[server_software] => Apache
//			[php_version] => 7.1.2
//    [pdo] => 1
//    [gd] => 1
//    [curl] => 1
//    [openssl] => 1
//         )
		//加载模板，并将环境的配置项分配到页面中
		return view('',compact('data'));
	}

	//创建连接数据库的函数
	public function database(){
		if(IS_AJAX){
			//接受post数据
			$post=Request::post();
//			p($post);die();下面的打印结果在异步那里进行显示出来的
//			Array
//			(
//				[csrf_token] =>
//					[host] => 127.0.0.1
//    [user] => cms_cs
//			[password] => admin888
//			[database] => cms_cs
//			[prefix] => hdcms_
//)
//			进行不为空的验证
			Validate::make([
				['host','required','请输入主机地址',3],
				['user','required','请输入用户名',3],
				['password','required','请输入密码',3],
				['database','required','请输入数据库',3],
				['prefix','required','请输入表前缀',3],
			]);
			//然后进行连接数据库
			$dsn = "mysql:host={$post['host']};dbname={$post['database']}";
			try{
				//实例化pdo
				$pdo = new \PDO($dsn,$post['user'],$post['password']);
//				创建一个设置配置项的文件，相当于.env
                  Dir::create('data');
//                  然后写入文件内容
				file_put_contents('data/database.php',"<?php\r\nreturn ".var_export($post,true).";\r\n?>");

			}catch(\Exception $exception){
				return $this->error("数据库连接失败：".$exception->getMessage());
			}
			return $this->success('数据库连接成功');
		}//ajax结束
		//先加载模板
		return view();
	}//数据库连接函数

	public function tables(){
		//创建数据表下面的两句话就相当于是在终端进行的；在运行迁移的时候要先有执行迁移创建出来的那些文件
		cli('hd migrate:make');
		cli('hd seed:make');
		//写入管理员数据
		$model = new Admin();
		$model['admin_username'] = 'hdcms';
		$model['admin_password'] = '$2y$10$B9eab4.qiqFF.d1ny/92Iu9q3ScCI/b1umWrub5.6V1tVfgvagkZ.';
		$model->save();
		go('finish');
	}
	//完成安装
	public function finish()
	{
		//生成lock.php文件
		touch('lock.php');
//		file_put_contents('lock.php','');
		return view();
	}
}
